草庐IT

c++ - QML Qt openUrlExternally

全部标签

c++ - C 和 C++ 中 sizeof 运算符的不同输出

C和C++中sizeof()运算符的不同输出。在C中:intmain(){printf("%zu\n",sizeof(1==1));return0;}输出:4在C++中:intmain(){std::cout输出:1问题:为什么输出不同?sizeof是否独立于操作系统或编译器?是否取决于语言? 最佳答案 根据N1570草稿(c11):6.5.9相等运算符The==(equalto)and!=(notequalto)operatorsareanalogoustotherelationaloperatorsexceptfortheirl

c++ - 从 C 移植到 C++ 时应该注意什么

将我的项目从C语言转换为C++语言时应该注意什么?有什么理由使用C吗?我现在唯一的想法是确保它对DLL友好,这样我就可以在需要时创建C接口(interface)。注意:我很了解C++。模板、部分特化、为什么多重继承不好(我只看到它的一种正确用法)等。我主要想知道为什么我会使用C而不是C++。DLL和脚本语言绑定(bind)是原因之一。所以我只需要记住我应该有一个用于某些事情的C接口(interface)。还有什么吗? 最佳答案 冒着显而易见的风险,我要说的是要记住的主要事情是不要修复任何未损坏的东西。如果您有一个工作的C库,并希望它

java - 为什么方法不能返回多个值

只是想知道,对于java、c、c++等语言中的方法具有多个返回值是否有任何技术限制,或者限制只是规范?在汇编语言中,我理解被调用者可以弹出一个值来注册。 最佳答案 因为在C时代有/曾经有一个寄存器用于保存返回值。因为如果您需要更多值,您可以只返回一个struct、引用(在Java/C#中)或指针。因为您可以使用输出参数。允许多个返回值会增加复杂性,而且它只是变通了。它没有理由在那里。(实际上,在C++中,您可以返回一个tuple(来自TR1、C++11或boost),它实际上是多个返回值)

c++ - C++ 什么时候从内存中删除变量?

我使用C++有一段时间了。我只是不确定内存管理是如何工作的,所以这里是:我首先不确定函数中的内存是如何取消分配的,例如:intaddTwo(intnum){inttemp=2;num+=temp;returnnum;}所以在这个例子中,temp会在函数结束后从内存中删除吗?如果不是,这是怎么做到的。在C#中,一旦变量的作用域用完,它就会被删除。还有其他我应该知道的情况吗?谢谢 最佳答案 在C++中有一个非常简单的经验法则:所有内存在超出范围时都会自动释放,除非手动分配。手动分配:由new()分配的任何对象必须由匹配的delete()

c++ - 这个外部无害吗?

主要.hexternintarray[100];主.c#include"main.h"intarray[100]={0};intmain(void){/*do_stuff_with_array*/}在main.c模块中,定义并声明了数组。在模块中也包含extern语句的行为会导致任何问题吗?我一直将extern语句想象成链接器的命令,“在别处寻找实际的命名实体。它不在这里。”我错过了什么?谢谢。邪恶。 最佳答案 extern的正确解释是你告诉编译器一些东西。您告诉编译器,尽管现在不存在,但声明的变量将以某种方式被链接器找到(通常在另

c++ - 你能解释一下输出吗?

以下代码的输出应该是什么,为什么?我有点困惑。inta=10;printf("%d%d%d",a,a=a+10,a); 最佳答案 输出是不确定的,因为a=a+10是一个副作用,编译器可以在任何其他参数之前或之后自由评估它。编辑:正如大卫指出的那样,该行为实际上是未定义,这意味着所有赌注都已关闭,您永远不应该编写此类代码。实际上,编译器几乎总是会做一些看似合理且不可预测的事情,甚至可能在调试和优化构建之间有所不同。我不认为抹香鲸是一个可能的结果。牵牛花?也许吧。 关于c++-你能解释一下输

c++ - 为什么在 C/C++/rtl 中没有类似 Z80 的 LDIR 功能?

在Z80机器代码中,一种将缓冲区初始化为固定值的廉价技术,比如全部为空白。所以一段代码可能看起来像这样。LDHL,DESTINATION;pointtothesourceLDDE,DESTINATION+1;pointtothedestinationLDBC,DESTINATION_SIZE-1;copyingthismanybytesLD(HL),0X20;putaseedspaceinthefirstpositionLDIR;move1to2,2to3...结果是DESTINATION的内存块完全被空白填充。我试验过memmove和memcpy,但无法复制这种行为。我希望memmo

c++ - malloc 多个小时间或几个大时间更快?

当使用malloc分配内存时,对较小的数据block进行多次malloc还是对较大的数据block进行较少的malloc通常更快?例如,假设您正在处理一个包含黑色像素和白色像素的图像文件。您正在遍历像素并希望将每个黑色像素的x和y位置保存在一个新结构中,该结构还具有指向下一个和上一个像素x和y值的指针。使用指针为每个黑色像素的x和y值分配一个新结构来遍历像素通常会更快,还是通过遍历一次来计算黑色像素的数量,然后分配一个大的使用仅包含x和y值但不包含指针的结构的内存块,然后再次迭代,将x和y值保存到该数组中?我假设某些平台在哪个更快方面可能与其他平台不同,但每个人都认为什么通常会更快?

c++ - malloc 在这段代码中做了什么?

你能解释一下下面的代码吗?str=(char*)malloc(sizeof(char)*(num+1));malloc在这里做什么?为什么使用num+1? 最佳答案 malloc是一个函数thatallocatesachunkofmemoryontheheap并返回pointer给它。它类似于许多语言中的new运算符。在这种情况下,它创建了一个内存块,该内存块可以在任意时间长度内存活并且具有任意大小。这本身就是相当深入的东西,有点难以解释,需要单独提出一个问题。num+1补偿了nullterminator在字符串的末尾。字符串通常需

c++ - rate++a,a++,a=a+1 和 a+=1 在 C 中的执行效率。假设 gcc 是编译器

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:Isthereaperformancedifferencebetweeni++and++iinC++?对于以下的使用,请以C语言的执行时间来评价。在一些采访中,我被问到我应该使用这些变体中的哪个以及为什么。a++++aa=a+1a+=1